Video content delivery over a wide area network as well as over a local area network continues to expand in use. The delivery and playback of media in real-time, often known as streaming, places significant burdens on a network as well as on the equipment used for delivering and receiving the content.
One well known method for managing the delivery of data is to use delivery chunking as part of the signal encoding. Chunked transfer encoding is a data transfer mechanism in the Hypertext Transfer Protocol (HTTP) that allows HTTP data to be reliably delivered between a service, such as a web server, and a client application running in an end client device, such as a web browser. The chunked encoding modifies the body of a message in order to transfer it as a series of chunks, each with its own size indicator, followed by an optional trailer containing entity-header fields. The mechanism allows delivery without knowing in advance of transmission the size of the entire message body. This is achieved by splitting the data payload of the message in small parts (chunks) and transmitting its size with each chunk. The data transfer is terminated by a final chunk of length zero.
Chunked transfer encoding may be applied to video content delivery as well. Most servers that use the HTTP 1.1 chunking methodology simply send out the leading edge of the stream, usually contained in a buffer in memory. Some implementations might also use a file instead of an in-memory buffer and simply loop on reading from the end of the file as the file grows due to the acquisition of additional live content. The advantage of these approaches is that they are very simple and straightforward to implement. They scale well and are robust.
However, segmenting video content using chunked transfer encoding may lead to additional operational inefficiencies, particularly in the receiving device. For instance, seeking within a media stream using the above techniques is more complex than simply streaming the leading edge of the stream. Further, unless the server uses a special file system which allows for live truncation of the beginning of the media file buffer, the file will continue to grow indefinitely and cannot be reduced in size while live content is continuously served. Therefore there is a need for an improved mechanism for efficiently transmitting a live stream through HTTP protocols.
Apple introduced a system called HTTP Live Streaming, which streams audio and video in segments. The server breaks a media stream into segments, and sends out each segment individually. It has advantages over the technique of streaming from the leading edge. However, Apple's technique requires the clients to maintain a playlist of the segments and render them as a continuous stream. Such a requirement makes the Apple's live streaming client a special client which is incompatible with the existing regular HTTP clients.
The present invention solves the problem of transmitting live streams of media from a media server to clients through the regular HTTP protocol.